home *** CD-ROM | disk | FTP | other *** search
/ PC World 2007 December / PCWorld_2007-12_cd.bin / v cisle / fma / fma-2.1-beta-4-setup.exe / {app} / help / script56.chm / local / dropdown.js < prev    next >
Text File  |  2005-12-12  |  2KB  |  57 lines

  1.  
  2.     // Dropdown menu control
  3.  
  4.     function Dropdown(activatorId, dropdownId) {
  5.  
  6.         // store activator and dropdown elements
  7.         this.activator = document.getElementById(activatorId);
  8.         this.dropdown = document.getElementById(dropdownId);
  9.  
  10.         // wire up show/hide events
  11.         registerEventHandler(this.activator,'mouseover', getInstanceDelegate(this, "show"));
  12.         registerEventHandler(this.activator,'mouseout', getInstanceDelegate(this, "requestHide"));
  13.         registerEventHandler(this.dropdown,'mouseover', getInstanceDelegate(this, "show"));
  14.         registerEventHandler(this.dropdown,'mouseout', getInstanceDelegate(this, "requestHide"));
  15.  
  16.         // fix visibility and position
  17.         this.dropdown.style.visibility = 'hidden';
  18.         this.dropdown.style.position = 'absolute';
  19.         this.reposition(null);
  20.  
  21.         // wire up repositioning event
  22.         registerEventHandler(window, 'resize', getInstanceDelegate(this, "reposition"));
  23.  
  24.  
  25.     }
  26.  
  27.     Dropdown.prototype.show = function(e) {
  28.         clearTimeout(this.timer);
  29.         this.dropdown.style.visibility = 'visible';
  30.     }
  31.  
  32.     Dropdown.prototype.hide = function(e) {
  33.         this.dropdown.style.visibility = 'hidden';
  34.     }
  35.  
  36.     Dropdown.prototype.requestHide = function(e) {
  37.         this.timer = setTimeout( getInstanceDelegate(this, "hide"), 250);
  38.     }
  39.  
  40.     Dropdown.prototype.reposition = function(e) {
  41.  
  42.         // get position of activator
  43.         var offsetLeft = 0;
  44.         var offsetTop = 0;
  45.         var offsetElement = this.activator;
  46.         while (offsetElement) {
  47.             offsetLeft += offsetElement.offsetLeft;
  48.             offsetTop += offsetElement.offsetTop;
  49.             offsetElement = offsetElement.offsetParent;
  50.         }
  51.  
  52.         // set position of dropdown relative to it
  53.         this.dropdown.style.left = offsetLeft;
  54.         this.dropdown.style.top = offsetTop + this.activator.offsetHeight;
  55.  
  56.     }
  57.